package com.tofine.smarthome.base;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.tofine.smarthome.R;

import butterknife.ButterKnife;

/**
 * @author ddMax
 * @since 2016/4/25
 * 说明：Activity基础类
 */
public abstract class BaseActivity extends AppCompatActivity implements
        BaseViewInterface {
    public static final String TAG = BaseActivity.class.getSimpleName();

    protected ActionBar mActionBar;
    protected TextView mTvActionBarTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        onBeforeSetContentView();
        if (getLayoutId() != 0) {
            setContentView(getLayoutId());
        }
        ButterKnife.bind(this);
        mActionBar = getSupportActionBar();
        if (hasActionBar()) {
            initActionBar(mActionBar);
        }

        init(savedInstanceState);
        initView();
        initData();
    }

    protected void init(Bundle savedInstanceState) {}

    /**
     * 在setContentView之前调用，可在子类中覆盖
     */
    protected void onBeforeSetContentView() {}

    /**
     * 在子Activity中覆盖该方法，用于得到layoutId
     * @return 布局的layoutId
     */
    protected int getLayoutId() {
        return 0;
    }

    /**
     * 在子Activity中覆盖该方法，布局是否包含ActionBar
     * @return true if has
     */
    protected boolean hasActionBar() {
        return true;
    }

    /**
     * 若子Activity中包含ActionBar，可选覆盖此方法设置标题
     */
    protected int getActionBarTitle() {
        return R.string.app_name;
    }

    /**
     * 覆盖此方法设置ActionBar布局
     */
    protected int getActionBarCustomView() {
        return R.layout.actionbar;
    }

    /**
     * 若子Activity需要显示返回按钮，则覆盖此方法
     * @return true if has
     */
    protected boolean hasBackButton() {
        return false;
    }

    /**
     * 本App所有ActionBar均为CustomView
     * @param actionBar
     */
    protected void initActionBar(ActionBar actionBar) {
        if (actionBar == null)
            return;
        View view = View.inflate(this, getActionBarCustomView(), null);
        if (hasBackButton()) {
            actionBar.setHomeButtonEnabled(true);
            actionBar.setDisplayHomeAsUpEnabled(true);
            Button btnBack = (Button) view.findViewById(R.id.back);
            if (btnBack != null) {
                btnBack.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        finish();
                    }
                });
            }
        }
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setCustomView(view);
        // 设置ActionBar布局中的标题
        mTvActionBarTitle = (TextView) view.findViewById(R.id.custom_action_bar_title);
        mTvActionBarTitle.setText(getActionBarTitle());
    }

}
